package com.lesso.lzh.sunflower.model;

import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableLogic;
import com.baomidou.mybatisplus.annotations.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.PositiveOrZero;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.time.LocalTime;

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("base_attendance_rule")
public class AttendanceRule extends BaseModel<AttendanceRule> {
    private static final long serialVersionUID = 1L;
    public static final String NAME = "梁宗焕";

    /**
     * 规则编码（非空，长度50以内，数据库唯一索引）
     */
    @NotBlank(message = "规则编码不能为空")
    @Size(max = 50, message = "规则编码长度不能超过50个字符")
    @TableField("rule_code")
    private String ruleCode;

    /**
     * 规则名称（非空，长度100以内）
     */
    @NotBlank(message = "规则名称不能为空")
    @Size(max = 100, message = "规则名称长度不能超过100个字符")
    @TableField("rule_name")
    private String ruleName;

    /**
     * 上班时间（非空）
     */
    @NotNull(message = "上班时间不能为空")
    @TableField("work_start_time")
    private LocalTime workStartTime;

    /**
     * 下班时间（非空）
     */
    @NotNull(message = "下班时间不能为空")
    @TableField("work_end_time")
    private LocalTime workEndTime;

    /**
     * 迟到阈值（分钟，非负）
     */
    @PositiveOrZero(message = "迟到阈值不能为负数")
    @TableField("late_threshold")
    private Integer lateThreshold;

    /**
     * 早退阈值（分钟，非负）
     */
    @PositiveOrZero(message = "早退阈值不能为负数")
    @TableField("early_threshold")
    private Integer earlyThreshold;

    /**
     * 删除标识：0-正常，1-删除（默认0，只能为0或1）
     */
    @TableLogic
    @TableField("del_status")
    private Integer delStatus; // 可额外添加@Pattern注解限制取值范围
}